home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2001 December / pcwk12201b.iso / Wersje pelne i specjalne / Winamp 2.77 i 3.0beta / wasabi-sdk_beta1.exe / jnetlib / asyncdns.h < prev    next >
C/C++ Source or Header  |  2001-10-08  |  3KB  |  84 lines

  1. /*
  2.  
  3.   Nullsoft WASABI Source File License
  4.  
  5.   Copyright 1999-2001 Nullsoft, Inc.
  6.  
  7.     This software is provided 'as-is', without any express or implied
  8.     warranty.  In no event will the authors be held liable for any damages
  9.     arising from the use of this software.
  10.  
  11.     Permission is granted to anyone to use this software for any purpose,
  12.     including commercial applications, and to alter it and redistribute it
  13.     freely, subject to the following restrictions:
  14.  
  15.     1. The origin of this software must not be misrepresented; you must not
  16.        claim that you wrote the original software. If you use this software
  17.        in a product, an acknowledgment in the product documentation would be
  18.        appreciated but is not required.
  19.     2. Altered source versions must be plainly marked as such, and must not be
  20.        misrepresented as being the original software.
  21.     3. This notice may not be removed or altered from any source distribution.
  22.  
  23.  
  24.   Brennan Underwood
  25.   brennan@nullsoft.com
  26.  
  27. */
  28.  
  29. /*
  30. ** JNetLib
  31. ** Copyright (C) 2000-2001 Nullsoft, Inc.
  32. ** Author: Justin Frankel
  33. ** File: asyncdns.h - JNL portable asynchronous DNS interface
  34. ** License: see jnetlib.h
  35. **
  36. ** Usage:
  37. **   1. Create JNL_AsyncDNS object, optionally with the number of cache entries.
  38. **   2. call resolve() to resolve a hostname into an address. The return value of 
  39. **      resolve is 0 on success (host successfully resolved), 1 on wait (meaning
  40. **      try calling resolve() with the same hostname in a few hundred milliseconds 
  41. **      or so), or -1 on error (i.e. the host can't resolve).
  42. **   3. call reverse() to do reverse dns (ala resolve()).
  43. **   4. enjoy.
  44. */
  45.  
  46. #ifndef _ASYNCDNS_H_
  47. #define _ASYNCDNS_H_
  48.  
  49. class JNL_AsyncDNS
  50. {
  51. public:
  52.   JNL_AsyncDNS(int max_cache_entries=64);
  53.   ~JNL_AsyncDNS();
  54.  
  55.   int resolve(char *hostname, unsigned long *addr); // return 0 on success, 1 on wait, -1 on unresolvable
  56.   int reverse(unsigned long addr, char *hostname); // return 0 on success, 1 on wait, -1 on unresolvable. hostname must be at least 256 bytes.
  57.  
  58. private:
  59.   typedef struct 
  60.   {
  61.     int last_used; // timestamp.
  62.     char resolved;
  63.     char mode; // 1=reverse
  64.     char hostname[256];
  65.     unsigned long addr;
  66.   } 
  67.   cache_entry;
  68.  
  69.   cache_entry *m_cache;
  70.   int m_cache_size;
  71.   volatile int m_thread_kill;
  72. #ifdef _WIN32
  73.   HANDLE m_thread;
  74.   static unsigned long WINAPI _threadfunc(LPVOID _d);
  75. #else
  76.   pthread_t m_thread;
  77.   static unsigned int _threadfunc(void *_d);
  78. #endif
  79.   void makesurethreadisrunning(void);
  80.  
  81. };
  82.  
  83. #endif //_ASYNCDNS_H_
  84.